package clases;

import java.io.Serializable;
import java.sql.Time;
import java.util.Date;

public class TicketPeaje implements Serializable, Comparable{
    private final Date HORA1 = new Time(11, 00, 00);
    private final float TARIFABASE = (float) 2.5;
    
    private String matricula;
    private float tamaño;
    private Date fecha;
    private Date fecha_entrada;
    private float pago;

    public TicketPeaje(Vehiculo coche, Date fecha_entrada, Date fecha_salida) {
        this.matricula = coche.getMatricula();
        this.tamaño = coche.getTamaño();
        this.fecha = fecha_salida;
        this.pago = calcularTarifa(fecha,coche.getTipoVehiculo());
        this.fecha_entrada = fecha_entrada;
    }

    public Date getFecha_entrada() {
        return fecha_entrada;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public String getMatricula() {
        return matricula;
    }

    public float getPago() {
        return pago;
    }

    public float getTamaño() {
        return tamaño;
    }

    public void setPago(float pago) {
        this.pago = pago;
    }
            
    private float calcularTarifa(Date fecha, int tipoCoche){
        Time hora = new Time (fecha.getHours(),fecha.getMinutes(),fecha.getSeconds());
        float multHora = 0;
        
        if (hora.after(HORA1))
            multHora = (float) 0.5;

        return TARIFABASE + tipoCoche-1 * (float) 1.5  + tipoCoche * multHora;
    }

    @Override
    public String toString() {
        return "TicketPeaje{" + "matricula=" + matricula + ", tama\u00f1o=" + tamaño + ", fecha=" + fecha + ", pago=" + pago + '}';
    }

    @Override
    public int compareTo(Object o) {
        TicketPeaje o1 = (TicketPeaje) o;
        return this.getMatricula().compareTo(o1.getMatricula());
    }
    
}
